<html>
    <head>
        <meta charset="UTF-8">
        <title>数组的方法</title>
        <script type="text/javascript">
            var arr = ["001","002","003","004","005","006"];
            /*
                slice()
                    提取数组中的指定元素
                    该方法不会改变原数组，而是将截取到的元素封装进一个新的数组并返回
                    参数：
                        1.截取开始位置的索引，包含开始索引
                        2.截取结束位置的索引，不包含结束索引
                            如果不写第二个参数，则默认截取到最后一个元素
                            索引可以传递一个负值，如果索引为负值，则表示从最后一个开始往前面计算
                                -1表示倒数第一个
                                -2表示倒数第二个等等
            */

            //002,003
            var result1 = arr.slice(1, 3);
            console.log(result1);

            //002,003,004,005,006
            var result2 = arr.slice(1);
            console.log(result2);

            //004,005
            var result3 = arr.slice(3, -1);
            console.log(result3);

            console.log("---------------------------------------");


            /*
                splice()
                    删除数组中的指定元素
                    该方法会影响到原数组，将指定元素从原数组中删除，并且将被删除元素后的原数组返回
                    参数：
                        1.表示开始位置的索引
                        2.表示删除的元素数量
                        3.可以传递新的元素，放在索引位置的前面
            */

            //002,003
            var result4 = arr.splice(1, 2);
            console.log(result4);
            //001,004,005,006
            console.log(arr);

            //004,005
            var result5 = arr.splice(1, 2, "007", "008");
            console.log(result5);
            //001,007,008,006
            console.log(arr);

            console.log("---------------------------------------");

            /*
                concat()
                    链接两个或多个数组，并且将新的数组返回
                    该方法不会影响新的数组
            */

            //001,007,008,006,009,010
            var result6 = arr.concat("009", "010");
            console.log(result6);
            //001,007,008,006
            console.log(arr);
            //001,007,008,006,011,012,013
            var arr2 = ["011", "012", "013"];
            var result7 = arr.concat(arr2);
            console.log(result7);


            console.log("---------------------------------------");

            /*
                join()
                    将一个数组转换成一个字符串
                    该方法不会对原数组有影响，而是将转换后的字符串作为结果返回
                    在join()中可以指定一个字符串作为参数，这个字符串将会成为数组中元素的连接符
                        如果不指定连接符，那么将默认使用“,”
            */

      
            var result8 = arr.join();
            console.log(arr);     
            //Object
            console.log(typeof arr);
            //001,007,008,006
            console.log(result8);
            //string
            console.log(typeof result8);
            //001--007--008--006
            var result9 = arr.join("--");
            console.log(result9);

            console.log("---------------------------------------");

            /*
                reverse()
                    该方法会翻转数组，并将新数组进行返回
                    该方法会对原数组产生影响
            */

            //006,008,007,001
           arr.reverse();
           console.log(arr);

           console.log("---------------------------------------");

           /*
                sort()
                    可以用来对数组中的元素进行排序
                    该方法会影响原数组，默认会按照Unicode编码进行排序
                        既是对于纯数字数组，使用sort()排序时，也会按照Unicode编码排序，
                        所以对数字进行排序时会得到错误的结果
                    我们可以自己制定排序规则
                        可以在sort()中添加一个回调函数，来制定排序规则
                            回调函数中需要定义两个实参
                            浏览器会分别使用数组中的元素作为实参去调用回调函数
                            使用哪个袁术调用不确定，但是肯定的是数组中a一定在b前面
                        浏览器会根据回调函数的返回值来确定元素的位置
                            如果返回一个大于0的值，则会交换元素的位置
                            如果返回一个小于0的值，则不改变元素的位置
                            如果返回一个0，则认为两个值相等，也不交换位置
           */

           //001,006,007,008
          arr.sort();
          console.log(arr);
           //1,22,3,5,6,9
          var arr3 = [1,5,9,6,3,22];
          arr3.sort()
          console.log(arr3);

          arr3.sort(function(a,b)
          {
                /*
                if(a > b)
                {
                    return 1
                }
                else if(a < b)
                {
                    return -1
                }
                else
                {
                    return 0;
                }
                */
                return a - b;
          });
          //1,3,5,6,9,22
          console.log(arr3);


        </script>
    </head>

    <body>

    </body>
</html>